#ifndef APPLICATION_H_
#define APPLICATION_H_

#include "device_state_event.h"
#include "board/board.h"

class Application
{
public:
    static Application& GetInstance() {
        static Application instance;
        return instance;
    }
    Application(const Application&) = delete;
    Application& operator=(const Application&) = delete;

    void Start();
    void SetDeviceState(DeviceState state);
    DeviceState GetDeviceState() const { return device_state_; };


private:
    Application();
    ~Application();

    EventGroupHandle_t event_group_ = nullptr;
    volatile DeviceState device_state_ = kDeviceStateUnknown;

    int clock_ticks_ = 0;

};

#endif  //APPLICATION_H_